基于条件和顺序的Java 8 Lambda过滤

您所在的位置:网站首页 java 条件 基于条件和顺序的Java 8 Lambda过滤

基于条件和顺序的Java 8 Lambda过滤

2023-03-15 18:16| 来源: 网络整理| 查看: 265

我试图根据多个条件对列表进行排序。

1234567891011121314151617181920212223242526272829303132333435class Student{         private int Age;         private String className;         private String Name;         public Student(int age, String className, String name) {             Age = age;             this.className = className;             Name = name;         }         public int getAge() {             return Age;         }         public void setAge(int age) {             Age = age;         }         public String getClassName() {             return className;         }         public void setClassName(String className) {             this.className = className;         }         public String getName() {             return Name;         }         public void setName(String name) {             Name = name;         }     }

现在,如果我有一个列表,请说

123456List students = new ArrayList();         students.add(new Student(24,"A","Smith"));         students.add(new Student(24,"A","John"));         students.add(new Student(30,"A","John"));         students.add(new Student(20,"B","John"));         students.add(new Student(24,"B","Prince"));

我如何能够获得一个名字不同的最老的学生的名单? 在C#中,通过使用System.Linq GroupB进行比较非常简单,然后将其与select进行比较,然后进行展平,我不太确定如何在Java中实现相同的目标。

相关讨论 students.stream().collect(groupingBy(...))。 您是否只想要最旧的列表? 请告诉我们期望的结果是什么。 IE。地图/列表/外观如何。

使用toMap收集器:

12345Collection values = students.stream()                 .collect(toMap(Student::getName,                         Function.identity(),                         BinaryOperator.maxBy(Comparator.comparingInt(Student::getAge))))                 .values();

说明

我们正在使用toMap的重载:

123toMapa€?(Function


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3